package com.lulin.gateway.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

/**
 * 同一在gateway中，解决跨域问题
 *
 * @author lulin
 * @date 2022/9/28 8:29
 */
@Configuration
public class MallCorsConfiguration {
    /**
     * 跨域配置信息
     */
    @Bean
    public CorsWebFilter corsWebFilter() {
        //基于 URL 的 CORS 配置源, 用于跨域配置信息的共享
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration configuration = new CorsConfiguration();
        //配置跨域的信息
        configuration.addAllowedHeader("*");            //允许所有的请求头
        configuration.addAllowedMethod("*");            //允许所有的请求方法

        //springboot升级到2.4.0以后，需要使用这个配置
        configuration.addAllowedOriginPattern("*");     //允许所有的请求来源
        configuration.setAllowCredentials(true);        //允许携带 cookie 凭证信息
        //注册跨域配置信息，允许所有的路径
        source.registerCorsConfiguration("/**", configuration);

        return new CorsWebFilter(source);
    }
}
